package com.rd.sys.common.utils.crypto;

import java.io.IOException;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import com.rd.sys.common.base.CommonConstants;

/**
 * BASE64工具类
 * 
 * @author
 * 
 */
public class BASE64 {

    /** 字符集 */
    private static final String Charset = CommonConstants.SysParamConstants.SYS_CHARSET;

    /**
     * 编码算法
     * 
     * @param src
     *            待编码内容
     * @return
     */
    public static String encode(byte[] src) throws Exception {
        return new BASE64Encoder().encode(src);
    }

    /**
     * 编码算法
     * 
     * @param src
     *            待编码内容
     * @return
     */
    public static String encode(String src) throws Exception {
        byte[] srcByte = src.getBytes(Charset);
        return encode(srcByte);
    }

    /**
     * 解码算法
     * 
     * @param src
     *            待解码内容
     * @return
     * @throws IOException
     */
    public static byte[] decode(String src) throws IOException, Exception {
        return new BASE64Decoder().decodeBuffer(src);
    }

    /**
     * 解码算法(解码成字符串)
     * 
     * @param src
     *            待解码内容
     * @return
     * @throws IOException
     */
    public static String decode2String(String src) throws IOException, Exception {
        byte[] destByte = decode(src);
        return new String(destByte, Charset);
    }

}
